package com.nuedu.corejava.ch4;

public class Array1 {
	public static void main(String[] args) {
		//数组：是一种数据结构，用于保存类型相同的一组数组；可以是基本数据类型或引用数据类型
		//设计一个数据结构，用于保存全班同学oracle课程的成绩
		//数组的定义:数组的定义使用：数据类型 中括号 和变量名进行定义
		//两种结构：数据类型[] 变量名；  数据结构  变量名[];
		
		//数组需要初始化后才能用于存放数据；
		//数据的初始化有多种方式：
		//1.在定义的时候初始化；数组在初始化时需要指定数组的长度
		double[] scores = new double[50];
		scores[0]=98;//保存数据到数组中
		scores[1]=97;
		scores[2]=96;
		scores[3]=95;
		double score = scores[0];//从数组中获取数据
		
		
		//设计一个数据结构，用于保存全班同学的姓名
		String students[];
		//2.在定以后初始化，数组在初始化时需要指定数组的长度
		students =new String[50];
		
		//3.在定义时初始化数组，不指定数组长度，而是直接填充数据在数组元素中
		double[] scores2=new double[]{98,97,96,94,94,98};
		double[] scores3={98,97,96,94,94,98};
		//double[] scores2=new double[10]{98,97,96,94,94,98};//错误：不能指定长度
		//double[10] scores2=new double[]{98,97,96,94,94,98};//错误：不能在赋值符号左边指定长度
		
		
		//数组元素的默认值：
		//1.整型数组元素的默认值是0
		//2.浮点型数组元素的默认值是0.0f或0.0
		//3.char 类型数组元素的默认值是  \u0000
		//4.布尔值类型的数组元素的默认值是false
		//5.其他引用数据类型的默认值都是null
		
		// new 关键词，
		//在java语言中可以使用new关键词实例化对象，在实例化过程中会进行内存空间的申请，申请后由jvm进行内存分配
		//对象申请内存后才能保存数据；
		//没有实例化的数组不能进行数组元素的访问，否则会抛出空指针异常；
		//空指针异常是一个运行异常，引用一个没有初始化的null对象的属性或方法时，会发生空指针异常；
		//发生空指针异常时需要检查对象是否初始化，即是否使用new关键词进行初始化
		//在程序运行过程中可能发生的错误叫异常；这些错误是由于用户输入或逻辑错误产生的，一般可以通过代码进行修正；
		
		
		
		//数组元素的访问
		//数组的遍历
		//for循环
		//数组是一个对象，包含有一个length属性，可以用于获取数组的长度
		//数组的下标是从0开始的
		for (int i=0;i<scores3.length;i++){
			System.out.print(scores3[i]+"\t");
			
		}
		System.out.println();
		int index =0;
		while (index<scores3.length) {
			System.out.print(scores3[index++]+"\t");
		
			
		}
		System.out.println();
		//for each  :可以遍历数组或集合
		for(double d:scores3){
			System.out.print(d+"\t");
		}
		System.out.println();

		//数组下标越界异常
		//double d=scores3[scores3.length];错误：下标越界
		double d=scores3[scores3.length-1];
	}

}
